logo
In [1]:
import proveit
from proveit import defaults
from proveit.logic.equality  import equals_symmetry
from proveit import x, y, z
from proveit.logic import Equals, Or, InSet, Boolean, And, Not
from proveit.numbers import LessEq, Less, Real
from proveit.numbers.ordering  import less_eq_def, transitivity_less_less
theory = proveit.Theory() # the theorem's theory
In [2]:
%proving symmetric_less_eq
With these allowed/disallowed theorem/theory presumptions (e.g., to avoid circular dependencies), we begin our proof of
symmetric_less_eq:
(see dependencies)
In [3]:
defaults.assumptions = symmetric_less_eq.all_conditions()
defaults.assumptions:
In [4]:
less_eq_def
In [5]:
spec_l_e_dxy = less_eq_def.instantiate({x:x, y:y})
spec_l_e_dxy:  ⊢  
In [6]:
spec_l_e_dxy.lhs.evaluation()
In [7]:
spec_l_e_dyx = less_eq_def.instantiate({x:y, y:x})
spec_l_e_dyx:  ⊢  
In [8]:
spec_l_e_dyx.derive_right_via_equality()
In [9]:
xlylx = And(Less(x,y),Less(y,x)).evaluation(assumptions = [Less(x,y), Not(Less(y,x))])
xlylx: ,  ⊢  
In [10]:
ylxly = And(Less(y,x), Less(x,y)).evaluation(assumptions = [Less(y,x), Not(Less(x,y))])
ylxly: ,  ⊢  
In [11]:
xlyeqx = And(Less(x,y), Equals(y,x)).evaluation(assumptions = [Less(x,y), Not(Equals(y,x))])
xlyeqx: ,  ⊢  
In [12]:
xeqylx = And(Equals(x,y), Less(y,x)).evaluation(assumptions = [Equals(x,y), Not(Less(y,x))])
xeqylx: ,  ⊢  
In [13]:
equals_symmetry
In [14]:
spec_e_s = equals_symmetry.instantiate({x:x, y:y})
spec_e_s:  ⊢  
In [15]:
spec_l_e_dxy.rhs.derive_via_dilemma(Equals(x,y), assumptions = [Equals(y,x), InSet(x, Real), InSet(y, Real)])
, ,  ⊢  
In [16]:
spec_l_e_dyx.rhs.derive_via_dilemma(Equals(y,x), assumptions = [Equals(x,y), InSet(x, Real), InSet(y, Real)])
, ,  ⊢