TorchLean API

NN.MLTheory.CROWN.Proofs.GraphCertSoundness.Main.UnaryOps

Certificate Soundness: Elementwise Activation Nodes #

Operator cases relu, tanh, sigmoid, sin, and cos of the IBP certificate induction. tanh and sigmoid share one box-level lemma about Runtime.Ops.IBP.mapMinmax for monotone scalar maps; sin and cos use the Lipschitz enclosures from NonlinearOps.

Monotonicity of the scalar activations over the reals #

Box-level enclosure #

boxRelu encloses the ReLU of an enclosed value.

Endpoint min/max propagation encloses any monotone elementwise map of an enclosed value.

The tanh IBP transfer encloses tanh of an enclosed value.

The sigmoid IBP transfer encloses the sigmoid of an enclosed value.

The sin IBP transfer encloses sin of an enclosed value.

The cos IBP transfer encloses cos of an enclosed value.

Node-level soundness #

theorem NN.MLTheory.CROWN.Graph.CertSoundness.relu_node_encloses {nodes : Array Node} {ps : ParamStore } {cert : Array (Option (FlatBox ))} {inputs : Std.HashMap Val} {vals : Array (Option Val)} {k : } {B : FlatBox } {v : Val} (hkKind : nodes[k]!.kind = IR.OpKind.relu) (hcertStep : certStepNode? nodes ps cert k = some B) (hvalStep : evalNode? nodes ps inputs vals k = some v) (hpe : ParentsEnclosed nodes cert vals k) :

Certificate soundness at a relu node.

theorem NN.MLTheory.CROWN.Graph.CertSoundness.tanh_node_encloses {nodes : Array Node} {ps : ParamStore } {cert : Array (Option (FlatBox ))} {inputs : Std.HashMap Val} {vals : Array (Option Val)} {k : } {B : FlatBox } {v : Val} (hkKind : nodes[k]!.kind = IR.OpKind.tanh) (hcertStep : certStepNode? nodes ps cert k = some B) (hvalStep : evalNode? nodes ps inputs vals k = some v) (hpe : ParentsEnclosed nodes cert vals k) :

Certificate soundness at a tanh node.

theorem NN.MLTheory.CROWN.Graph.CertSoundness.sigmoid_node_encloses {nodes : Array Node} {ps : ParamStore } {cert : Array (Option (FlatBox ))} {inputs : Std.HashMap Val} {vals : Array (Option Val)} {k : } {B : FlatBox } {v : Val} (hkKind : nodes[k]!.kind = IR.OpKind.sigmoid) (hcertStep : certStepNode? nodes ps cert k = some B) (hvalStep : evalNode? nodes ps inputs vals k = some v) (hpe : ParentsEnclosed nodes cert vals k) :

Certificate soundness at a sigmoid node.

theorem NN.MLTheory.CROWN.Graph.CertSoundness.sin_node_encloses {nodes : Array Node} {ps : ParamStore } {cert : Array (Option (FlatBox ))} {inputs : Std.HashMap Val} {vals : Array (Option Val)} {k : } {B : FlatBox } {v : Val} (hkKind : nodes[k]!.kind = IR.OpKind.sin) (hcertStep : certStepNode? nodes ps cert k = some B) (hvalStep : evalNode? nodes ps inputs vals k = some v) (hpe : ParentsEnclosed nodes cert vals k) :

Certificate soundness at a sin node.

theorem NN.MLTheory.CROWN.Graph.CertSoundness.cos_node_encloses {nodes : Array Node} {ps : ParamStore } {cert : Array (Option (FlatBox ))} {inputs : Std.HashMap Val} {vals : Array (Option Val)} {k : } {B : FlatBox } {v : Val} (hkKind : nodes[k]!.kind = IR.OpKind.cos) (hcertStep : certStepNode? nodes ps cert k = some B) (hvalStep : evalNode? nodes ps inputs vals k = some v) (hpe : ParentsEnclosed nodes cert vals k) :

Certificate soundness at a cos node.