logo
In [1]:
import proveit
from proveit import defaults
from proveit import x, y
from proveit.numbers import zero
from proveit.numbers.divisibility  import divides_def
from proveit.numbers.division import frac_zero_numer
from proveit.numbers.number_sets.integers import zero_is_int
theory = proveit.Theory() # the theorem's theory
In [2]:
%proving non_zero_divides_zero
With these allowed/disallowed theorem/theory presumptions (e.g., to avoid circular dependencies), we begin our proof of
non_zero_divides_zero:
(see dependencies)
In [3]:
defaults.assumptions = non_zero_divides_zero.conditions
defaults.assumptions:
In [4]:
divides_def
In [5]:
divides_def_inst = divides_def.instantiate({x:x, y:zero})
divides_def_inst: ,  ⊢  
In [6]:
frac_zero_numer
In [7]:
frac_zero_numer_inst = frac_zero_numer.instantiate({x:x})
frac_zero_numer_inst: ,  ⊢  
In [8]:
zero_is_int
In [9]:
zero_over_x_in_z = frac_zero_numer_inst.sub_left_side_into(zero_is_int)
zero_over_x_in_z: ,  ⊢  
In [10]:
divides_def_inst.sub_left_side_into(zero_over_x_in_z)
non_zero_divides_zero may now be readily provable (assuming required theorems are usable).  Simply execute "%qed".
In [11]:
%qed
proveit.numbers.divisibility.non_zero_divides_zero has been proven.
Out[11]:
 step typerequirementsstatement
0generalization1  ⊢  
1instantiation2, 3, 4,  ⊢  
  : , : , :
2theorem  ⊢  
 proveit.logic.equality.sub_left_side_into
3conjecture  ⊢  
 proveit.numbers.number_sets.integers.zero_is_int
4instantiation5, 6*,  ⊢  
  : , :
5axiom  ⊢  
 proveit.numbers.divisibility.divides_def
6instantiation7, 8, 9,  ⊢  
  :
7conjecture  ⊢  
 proveit.numbers.division.frac_zero_numer
8assumption  ⊢  
9assumption  ⊢  
*equality replacement requirements