Efficient Statement
Efficient statement handling for geometric theorem proving.
This module provides data structures and utilities for representing and manipulating geometric statements in a theorem proving system. It includes:
Named tuple classes for different types of geometric statements (perpendicular, parallel, equal angles, etc.)
Named tuple classes for corresponding predicates with variable names
Functions for generating permutations of statements based on geometric symmetries
Functions for normalizing statements to canonical forms
Utilities for finding representatives of equivalence classes
The module is designed for efficiency in geometric theorem proving by providing canonical representations and symmetry handling for geometric statements.
- efficient_version(predicate)
- Return type:
Union[PerpStatement,ParaStatement,EqangleStatement,EqratioStatement,CongStatement,MidptStatement,CollStatement,CircleStatement,TriangleStatement,CyclicStatement]
- class PerpStatement(name, a, b, c, d)
Bases:
NamedTupleCreate new instance of PerpStatement(name, a, b, c, d)
-
name:
Literal['perp'] Alias for field number 0
-
a:
NewType(PredicateArgument,str) Alias for field number 1
-
b:
NewType(PredicateArgument,str) Alias for field number 2
-
c:
NewType(PredicateArgument,str) Alias for field number 3
-
d:
NewType(PredicateArgument,str) Alias for field number 4
-
name:
- class PerpPredicate(name, A, B, C, D)
Bases:
NamedTupleCreate new instance of PerpPredicate(name, A, B, C, D)
-
name:
Literal['perp'] Alias for field number 0
-
A:
NewType(VarName,str) Alias for field number 1
-
B:
NewType(VarName,str) Alias for field number 2
-
C:
NewType(VarName,str) Alias for field number 3
-
D:
NewType(VarName,str) Alias for field number 4
-
name:
- class ParaStatement(name, a, b, c, d)
Bases:
NamedTupleCreate new instance of ParaStatement(name, a, b, c, d)
-
name:
Literal['para'] Alias for field number 0
-
a:
NewType(PredicateArgument,str) Alias for field number 1
-
b:
NewType(PredicateArgument,str) Alias for field number 2
-
c:
NewType(PredicateArgument,str) Alias for field number 3
-
d:
NewType(PredicateArgument,str) Alias for field number 4
-
name:
- class ParaPredicate(name, A, B, C, D)
Bases:
NamedTupleCreate new instance of ParaPredicate(name, A, B, C, D)
-
name:
Literal['para'] Alias for field number 0
-
A:
NewType(VarName,str) Alias for field number 1
-
B:
NewType(VarName,str) Alias for field number 2
-
C:
NewType(VarName,str) Alias for field number 3
-
D:
NewType(VarName,str) Alias for field number 4
-
name:
- class EqangleStatement(name, a, b, c, d, e, f, g, h)
Bases:
NamedTupleCreate new instance of EqangleStatement(name, a, b, c, d, e, f, g, h)
-
name:
Literal['eqangle'] Alias for field number 0
-
a:
NewType(PredicateArgument,str) Alias for field number 1
-
b:
NewType(PredicateArgument,str) Alias for field number 2
-
c:
NewType(PredicateArgument,str) Alias for field number 3
-
d:
NewType(PredicateArgument,str) Alias for field number 4
-
e:
NewType(PredicateArgument,str) Alias for field number 5
-
f:
NewType(PredicateArgument,str) Alias for field number 6
-
g:
NewType(PredicateArgument,str) Alias for field number 7
-
h:
NewType(PredicateArgument,str) Alias for field number 8
-
name:
- class EqanglePredicate(name, A, B, C, D, E, F, G, H)
Bases:
NamedTupleCreate new instance of EqanglePredicate(name, A, B, C, D, E, F, G, H)
-
name:
Literal['eqangle'] Alias for field number 0
-
A:
NewType(VarName,str) Alias for field number 1
-
B:
NewType(VarName,str) Alias for field number 2
-
C:
NewType(VarName,str) Alias for field number 3
-
D:
NewType(VarName,str) Alias for field number 4
-
E:
NewType(VarName,str) Alias for field number 5
-
F:
NewType(VarName,str) Alias for field number 6
-
G:
NewType(VarName,str) Alias for field number 7
-
H:
NewType(VarName,str) Alias for field number 8
-
name:
- class EqratioStatement(name, a, b, c, d, e, f, g, h)
Bases:
NamedTupleCreate new instance of EqratioStatement(name, a, b, c, d, e, f, g, h)
-
name:
Literal['eqratio'] Alias for field number 0
-
a:
NewType(PredicateArgument,str) Alias for field number 1
-
b:
NewType(PredicateArgument,str) Alias for field number 2
-
c:
NewType(PredicateArgument,str) Alias for field number 3
-
d:
NewType(PredicateArgument,str) Alias for field number 4
-
e:
NewType(PredicateArgument,str) Alias for field number 5
-
f:
NewType(PredicateArgument,str) Alias for field number 6
-
g:
NewType(PredicateArgument,str) Alias for field number 7
-
h:
NewType(PredicateArgument,str) Alias for field number 8
-
name:
- class EqratioPredicate(name, A, B, C, D, E, F, G, H)
Bases:
NamedTupleCreate new instance of EqratioPredicate(name, A, B, C, D, E, F, G, H)
-
name:
Literal['eqratio'] Alias for field number 0
-
A:
NewType(VarName,str) Alias for field number 1
-
B:
NewType(VarName,str) Alias for field number 2
-
C:
NewType(VarName,str) Alias for field number 3
-
D:
NewType(VarName,str) Alias for field number 4
-
E:
NewType(VarName,str) Alias for field number 5
-
F:
NewType(VarName,str) Alias for field number 6
-
G:
NewType(VarName,str) Alias for field number 7
-
H:
NewType(VarName,str) Alias for field number 8
-
name:
- class CongStatement(name, a, b, c, d)
Bases:
NamedTupleCreate new instance of CongStatement(name, a, b, c, d)
-
name:
Literal['cong'] Alias for field number 0
-
a:
NewType(PredicateArgument,str) Alias for field number 1
-
b:
NewType(PredicateArgument,str) Alias for field number 2
-
c:
NewType(PredicateArgument,str) Alias for field number 3
-
d:
NewType(PredicateArgument,str) Alias for field number 4
-
name:
- class CongPredicate(name, A, B, C, D)
Bases:
NamedTupleCreate new instance of CongPredicate(name, A, B, C, D)
-
name:
Literal['cong'] Alias for field number 0
-
A:
NewType(VarName,str) Alias for field number 1
-
B:
NewType(VarName,str) Alias for field number 2
-
C:
NewType(VarName,str) Alias for field number 3
-
D:
NewType(VarName,str) Alias for field number 4
-
name:
- class MidptStatement(name, a, b, c)
Bases:
NamedTupleCreate new instance of MidptStatement(name, a, b, c)
-
name:
Literal['midp'] Alias for field number 0
-
a:
NewType(PredicateArgument,str) Alias for field number 1
-
b:
NewType(PredicateArgument,str) Alias for field number 2
-
c:
NewType(PredicateArgument,str) Alias for field number 3
-
name:
- class MidptPredicate(name, A, B, C)
Bases:
NamedTupleCreate new instance of MidptPredicate(name, A, B, C)
-
name:
Literal['midp'] Alias for field number 0
-
A:
NewType(VarName,str) Alias for field number 1
-
B:
NewType(VarName,str) Alias for field number 2
-
C:
NewType(VarName,str) Alias for field number 3
-
name:
- class TriangleStatement(name, a, b, c, p, q, r)
Bases:
NamedTupleCreate new instance of TriangleStatement(name, a, b, c, p, q, r)
-
name:
Literal['simtri','simtrir','contri','contrir'] Alias for field number 0
-
a:
NewType(PredicateArgument,str) Alias for field number 1
-
b:
NewType(PredicateArgument,str) Alias for field number 2
-
c:
NewType(PredicateArgument,str) Alias for field number 3
-
p:
NewType(PredicateArgument,str) Alias for field number 4
-
q:
NewType(PredicateArgument,str) Alias for field number 5
-
r:
NewType(PredicateArgument,str) Alias for field number 6
-
name:
- class TrianglePredicate(name, A, B, C, P, Q, R)
Bases:
NamedTupleCreate new instance of TrianglePredicate(name, A, B, C, P, Q, R)
-
name:
Literal['simtri','simtrir','contri','contrir'] Alias for field number 0
-
A:
NewType(VarName,str) Alias for field number 1
-
B:
NewType(VarName,str) Alias for field number 2
-
C:
NewType(VarName,str) Alias for field number 3
-
P:
NewType(VarName,str) Alias for field number 4
-
Q:
NewType(VarName,str) Alias for field number 5
-
R:
NewType(VarName,str) Alias for field number 6
-
name:
- class CollStatement(predicate_name: str, *points: str)
Bases:
tuple[str, …]
- class CollPredicate(predicate_name: str, *points: str)
Bases:
tuple[str, …]
- class CircleStatement(predicate_name: str, *points: str)
Bases:
tuple[str, …]
- class CirclePredicate(predicate_name: str, *points: str)
Bases:
tuple[str, …]
- class CyclicStatement(predicate_name: str, *points: str)
Bases:
tuple[str, …]
- class CyclicPredicate(predicate_name: str, *points: str)
Bases:
tuple[str, …]
- generate_permutations(stmt)
- Return type:
Iterator[Union[PerpStatement,ParaStatement,EqangleStatement,EqratioStatement,CongStatement,MidptStatement,CollStatement,CircleStatement,TriangleStatement,CyclicStatement]]
- cyclic_perms(stmt)
- Return type:
Iterator[CyclicStatement]
- coll_perms(stmt)
- Return type:
Iterator[CollStatement]
- circle_perms(stmt)
- Return type:
Iterator[CircleStatement]
- triangle_perms(stmt)
- Return type:
Iterator[TriangleStatement]
- normalize_triangle(stmt_pts)
- Return type:
- normalize_midpt(stmt_pts)
- Return type:
- midpt_perms(stmt_pts)
- Return type:
Iterator[MidptStatement]
- normalize_cong(stmt_pts)
- Return type:
- cong_perms(stmt_pts)
- Return type:
Iterator[CongStatement]
- normalize_eqratio(stmt_pts)
- Return type:
- eqratio_perms(stmt_pts)
- Return type:
Iterator[EqratioStatement]
- normalize_eqangle(stmt_pts)
- Return type:
- eqangle_perms(stmt_pts)
- Return type:
Iterator[EqangleStatement]
- normalize_para(stmt_pts)
- Return type:
- para_perms(stmt_pts)
- Return type:
Iterator[ParaStatement]
- normalize_perp(stmt_pts)
- Return type:
- perp_perms(stmt_pts)
- Return type:
Iterator[PerpStatement]
- normalize_coll(stmt_pts)
- Return type:
- normalize_circle(stmt_pts)
- Return type:
- normalize_cyclic(stmt_pts)
- Return type:
- get_representative_of_equivalence_class(stmt)
- Return type:
Union[PerpStatement,ParaStatement,EqangleStatement,EqratioStatement,CongStatement,MidptStatement,CollStatement,CircleStatement,TriangleStatement,CyclicStatement]