logo
In [1]:
import proveit
from proveit import x, y, A, B, C, fx, Px
from proveit.logic import And, Equals, Forall, InSet, NotSubsetEq, SubsetEq
from proveit.logic.equality  import substitution
from proveit.logic.equality import sub_right_side_into
from proveit.logic.sets.inclusion  import proper_subset_def, subset_eq_def
#from proveit.logic.sets.inclusion import relax_subset
In [2]:
%proving transitivity_subset_subset
With these allowed/disallowed theorem/theory presumptions (e.g., to avoid circular dependencies), we begin our proof of
transitivity_subset_subset:
(see dependencies)
transitivity_subset_subset may now be readily provable (assuming required theorems are usable).  Simply execute "%qed".
In [3]:
proper_subset_def
In [4]:
proper_subset_def_spec_a_b = proper_subset_def.instantiate()
proper_subset_def_spec_a_b:  ⊢  
In [5]:
# one possible way forward is to try to replace the improper subsets now with the definitions
# so how to take advantage of the def of improper subset shown below?
subset_eq_def
In [6]:
subset_eq_def_spec_a_b = subset_eq_def.instantiate()
subset_eq_def_spec_a_b:  ⊢  
In [7]:
# # perhaps build it then prove it?
# try01 = Equals(ProperSubset(A, B), And(Forall(x, InSet(x, B), conditions=[InSet(x, A)]), NotSubsetEq(B, A)))
In [8]:
# sub_right_side_into_spec = sub_right_side_into.instantiate({Px:subset_def_spec_a_b, y:SubsetEq(A, B), x: Forall(x, InSet(x, B), conditions=[InSet(x, A)])}, assumptions=[subset_eq_def_spec_a_b.expr])
In [9]:
# sub_right_side_into_spec.prove()
In [10]:
# substitution
In [11]:
# substitution_spec = substitution.instantiate({fx:subset_def_spec_a_b, x:SubsetEq(A, B), y:Forall(x, InSet(x, B), conditions=[InSet(x, A)])})
In [12]:
# subset_def_spec_b_c = subset_def.instantiate({A:B, B:C})
In [13]:
# subset_def_spec_a_c = subset_def.instantiate({A:A, B:C})
In [14]:
# subset_eq_def_spec_a_b = subset_eq_def.instantiate({A:A, B:B})
In [15]:
# subset_eq_def_spec_b_c = subset_eq_def.instantiate({A:B, B:C})
In [16]:
# subset_eq_def_spec_a_c = subset_eq_def.instantiate({A:A, B:C})
In [17]:
# subset_def_spec_a_b_derived = subset_def_spec_a_b.derive_right_via_equality(ProperSubset(A, B)])
In [18]:
# subset_def_spec_b_c_derived = subset_def_spec_b_c.derive_right_via_equality(ProperSubset(B, C)])
In [19]:
# subset_def_spec_a_c.rhs.prove(assumptions=ProperSubset(A,B), ProperSubset(B,C)})
In [20]:
# subset_def_spec_a_b_derived.inner_expr()
In [21]:
# subset_eq_def_spec.sub_right_side_into(subset_def_spec_a_b_derived)
In [22]:
# subset_def_spec_b_c.derive_right_via_equality(ProperSubset(A, B), ProperSubset(B, C)])
In [23]:
# %qed