import proveit
from proveit import defaults
from proveit import x, A, B, C
from proveit.logic import InSet, SubsetEq
from proveit.logic.sets.inclusion import subset_eq_def
%proving transitivity_subset_eq_subset_eq
subset_eq_def
subset_eq_def_inst_AB = subset_eq_def.instantiate({A:A, B:B})
subset_eq_def_inst_BC = subset_eq_def.instantiate({A:B, B:C})
subset_eq_def_inst_AB.derive_right_via_equality(assumptions=[subset_eq_def_inst_AB.lhs])
subset_eq_def_inst_AB.derive_right_via_equality(assumptions=[subset_eq_def_inst_AB.lhs]).instantiate(
{x:x}, assumptions=[InSet(x, A), subset_eq_def_inst_AB.lhs])
subset_eq_def_inst_BC.derive_right_via_equality(assumptions=[subset_eq_def_inst_BC.lhs]).instantiate(
assumptions=[InSet(x, A), SubsetEq(A, B), subset_eq_def_inst_BC.lhs])
subset_eq_def_inst_AC = subset_eq_def.instantiate({A:A, B:C})
subset_eq_def_inst_AC.derive_left_via_equality(assumptions=[SubsetEq(A, B), SubsetEq(B, C)])
%qed