src/HOL/SPARK/Manual/document/loop_invariant.adb
author haftmann
Thu, 19 Jun 2025 17:15:40 +0200
changeset 82734 89347c0cc6a3
parent 45044 2fae15f8984d
permissions -rw-r--r--
treat map_filter similar to list_all, list_ex, list_ex1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45044
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
     1
package body Loop_Invariant
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
     2
is
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
     3
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
     4
   procedure Proc1 (A : in Natural; B : in Word32; C : out Word32)
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
     5
   is
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
     6
   begin
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
     7
      C := 0;
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
     8
      for I in Natural range 1 .. A
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
     9
        --# assert Word32 (I - 1) * B = C;
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
    10
      loop
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
    11
         C := C + B;
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
    12
      end loop;
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
    13
   end Proc1;
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
    14
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
    15
   procedure Proc2 (A : in Natural; B : in Word32; C : out Word32)
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
    16
   is
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
    17
   begin
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
    18
      C := 0;
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
    19
      for I in Natural range 1 .. A
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
    20
        --# assert Word32 (I - 1) * B = C;
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
    21
      loop
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
    22
         C := C + B;
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
    23
        --# assert Word32 (I) * B = C;
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
    24
      end loop;
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
    25
   end Proc2;
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
    26
2fae15f8984d Added documentation for HOL-SPARK
berghofe
parents:
diff changeset
    27
end Loop_Invariant;