1 import Base 2 import ./elementwise.bend as Elementwise 3 import ./relu_LAWS.bend as Laws 4 5 def Laws.below_zero_words(x): 6 {==} 7 8 def Laws.at_most_zero_words(x): 9 {==} 10 11 def Laws.below_zero_edges(): 12 {==} 13 14 def Laws.at_most_zero_edges(): 15 {==} 16 17 def Laws.scalar_relu_left_below(left, right, below): 18 %Equal.sym(Bool, Elementwise.below_zero(left), True{}, below) : {Elementwise.zero_if(_, left) == 0.0 : F32} 19 {==} 20 21 def Laws.scalar_relu_left_kept(left, right, kept): 22 %Equal.sym(Bool, Elementwise.below_zero(left), False{}, kept) : {Elementwise.zero_if(_, left) == left : F32} 23 {==} 24 25 def Laws.scalar_relu_backward_zeroed(left, right, zeroed): 26 %Equal.sym(Bool, Elementwise.at_most_zero(left), True{}, zeroed) : {Elementwise.zero_if(_, right) == 0.0 : F32} 27 {==} 28 29 def Laws.scalar_relu_backward_passed(left, right, passed): 30 %Equal.sym(Bool, Elementwise.at_most_zero(left), False{}, passed) : {Elementwise.zero_if(_, right) == right : F32} 31 {==} 32 33 def Laws.relu_edges(): 34 {==} 35 36 def Laws.relu_backward_edges(): 37 {==}