Up: Corpus of Examples
Previous: Object in a box
Next: Heaps
Geometry
Kinematics
Statics
Dynamics
Declaration:
make_thin_ring(R1,R2,R : region; S1 : surface; S2 : pointset) -- Predicate
ring(R : region) --- Predicate.
thin_ring(R: region) --- Predicate.
ring_slice(RS, R : region) --- Predicate.
Formalism:
make_thin_ring(R1,R2,R : region; S1 : surface; S2 : pointset) < = >
rcc_EC(R1,R2) ^ R = R1 union R2 ^ thickly_connected(R1) ^
thickly_connected(R2) ^
R1 intersect R2 = S1 union S2 ^
connected(S1) ^ connected(S2) ^ PP(S1,outside(R1)) ^ PP(S2,outside(R2)) ^
DC(S1,S2).
ring(R) < = >
exists(R1,R2 : region; S1, S2 : surface) make_thin_ring(R1,R2,R,S1,S2).
thin_ring(R) < = >
exists(R1,R2 : region; S1 : surface; S2 : pointset)
make_thin_ring(R1,R2,R,S1,S2).
ring_slice(RS,R) < = >
exists(R2) make_thin_ring(RS,R2,R).
Formalism:
thin_ring(R) < = >
exists(R1,R2 : region; S1,S2 : point_set) rcc_EC(R1,R2) ^
connected_component(S1,R1 cup R2) ^
connected_component(S2,R1 cup R2) ^ disjoint(S1,S2).
RH is a ring hole through ring R if RH is a hole through R relative to some filling-in RF and all of the outlets of RH meet the outside of RF.
Formalism
ring_hole(RH,R : region) --- Predicate.
Definition:
ring_hole(RH,R) < = >
exists(RF : region; RHS : set[region]) holes(RHS,R,RF) ^ RH in RHS ^
[forall((S : surface) in outlets(RH,R)) subset(S,outside(RF))]
Characteristics : Topology.
Formalism:
thin_ring(R) < = > exists(RH : region) ring_hole(RH,R)
Characteristics : Geometry.
Formalism:
make_thin_ring(R1,R2,R,S1,S2) => ~convex(R1) V ~convex(R2).
Characteristics : Topology
Formalism:
ring(R) => ~blob(R).
Declaration:
interlock(R1,R2 : region) --- Predicate.
Formalism:
interlock(R1,R2) < = >
thin_ring(R1) ^ thin_ring(R2) ^ DS(R1,R2) ^
forall(RS : region) [blob(RS) ^ PP(R1,RS)] => rcc_O(RS,R2).
Characteristics : Topology.
Formalism:
interlocks(R1,R2) < = > interlocks(R2,R1)
Characteristics : Geometry.
Formalism:
thin_ring(R1) ^ PP(R2,outside(R1)) =>
exists(RH : region) rcc_EC(R2,RH) ^ blob(RH) ^ interlocks(R1,R2 union RH).
^ ~interlocks(R1,RH).
Characteristics : Geometry.
Formalism
interlocks(R1,R2) ^ PP(R1,R1A) ^ PP(R2,R2A) ^ rcc_DS(R1A,R2A)
^ connected(R1A) ^ connected(R2A) =>
interlocks(R1A,R2A).
Characteristics : Topology.
Formalism:
thin_ring(R1) ^ PP(R2,R1) ^ subset(R2,R1) ^ ~thin_ring(R2) =>
exists(R3 : region) ring_slice(R3,R1).
Characteristics : Topology.
Formalism:
ring(R) ^ PP(R1,R) ^ ~ring(R1) => exists(R2) P(R2,R--R1) ^
ring_slice(R2,R).
Declaration: simple_ring(R : region)
Formalism:
simple_ring(R) < = >
exists(R1,R2,S1,S2) ~ring(R1) ^ ~ring(R2) ^ make_ring(R1,R2,R,S1,S2)
Characteristics : Topology.
Formalism:
simple_ring(R) ^ slice(R1,R) ^ ~ring(R1) => ~ring(R--R1).
Characteristics : Topology.
Formalism:
thin_ring(R1) ^ slice(RS1,R) ^ slice(RS2,R) ^ DC(RS1,RS2) =>
~connected(R--R1--R2).
Characteristics : Topology.
Formalism:
ring(R) => exists(R1,R2) ring(R1) ^ ring(R2) ^ rcc_EC(R1,R2) ^
R = R1 intersect R.
Characteristics: Geometry
Formalism:
interlock(R1,R2) => ~[exists(SP) plane(SP) ^ plane_separates(SP,R1,R2)].
Characteristics: Kinematics
Formalism:
ring(O1 : object) ^ thin_ring(O2 : object) ^ holds(S1,interlock(O1,O2)) ^
S1 in H ^ S2 in H ^ kinematic(H) =>
holds(S2,interlock(O1,O2))