/* MK1 : Meta level knowledge for the Moment of inertia problems

						Updated: 10 February 81
*/


{ meta_knowledge }.
%------------------


argstruct(on,2,
		[point,object],
		[arg,arg]).

argstruct(area,2,
		[object,area],
		[arg,val]).

argstruct(basetype,2,
		[type,object],
		[arg,arg]).

argstruct(centre,2,
		[object,point],
		[arg,val]).

argstruct(dist_along,4,
		[object,point,point,length],
		[arg,arg,arg,arg]).

argstruct(line_length,2,
		[line,length],
		[arg,val]).

argstruct(mass_per_vol,2,
		[object,mass],
		[arg,val]).

argstruct(mass_per_area,2,
		[object,mass],
		[arg,val]).

argstruct(mass_per_length,2,
		[line,mass],
		[arg,val]).

argstruct(mass,2,
		[object,mass],
		[arg,val]).

argstruct(meets,3,
		[line,object,point],
		[arg,arg,arg]).

argstruct(radius,2,
		[object,length],
		[arg,val]).

argstruct(height,2,
		[object,length],
		[arg,val]).

argstruct(rad_of_gyr,3,
		[object,line,rofg],
		[arg,arg,val]).

argstruct(perp_dist,4,
		[object,object,length,angle],
		[arg,arg,val,val]).

argstruct(separation,4,
		[point,point,length,angle],
		[arg,arg,val,val]).

argstruct(line_sys,3,
		[line,point,point],
		[arg,val,val]).

argstruct(quad_sys,5,
		[object,line,line,line,line],
		[arg,val,val,val,val]).

argstruct(cont_meas,6,
		[object,scalar,point,object,scalar,scalar],
		[arg,val,arg,arg,val,val]).



{ normal_form }.
%--------------

% defn( separation(Obj1,Obj2,Sep,Angle), edb,
% 		[ sameclass(Obj1,Obj2,[Sep|Angle],sep(always)),
% 		  merge_sep(Obj1,Obj2,[Sep|Angle],always) ],
% 		[] ).


/* temporarily suspended
defn( line_sys(Line,Lend,Rend),  dbinf,
		( isa(line,Line) & end(Line,Lend,left) &
		  end(Line,Rend,right) ),
		[] ).

defn( quad_sys(Quad,Top,Bot,Left,Right), dbinf,
		( line_sys(Top,TL,TR) & line_sys(Bot,BL,BR) &
		  line_sys(Left,BL,TL) & line_sys(Right,BR,TR) ),
		[] ).
*/



