void fint n int j 0 for int
- Slides: 65
void f(int n) { int j = 0; for (int i = 0; i < n; ++i) { j += 1; } assert(j >= n); }
void f() { int i = 0; while (i < 100) { ++i; } assert(i == 100); } 2 2
2 2
2 2
void f(int n) { int j = 0; for (int i = 0; i < n; ++i) { j += 1; } assert(j >= n); }
void f(int n) { int j = 0; for (int i = 0; i < n; ++i) { j += 1; } assert(j >= n); } void f(int n) { int j = 0; int i = 0; assume(i >= n); assert(j >= n); } void f(int n) { int j = 0; int i = 0; assume(i < n); j += 1; ++i; assume(i >= n); assert(j >= n); }
void f(int n) { int j = 0; int i = 0; assume(i >= n); assert(j >= n); } void f(int n) { int j = 0; int i = 0; assume(i < n); j += 1; ++i; assume(i >= n); assert(j >= n); }
void f(int n) { int j = 0; for (int i = 0; i < n; ++i) { j += 1; } assert(j >= n); } 2 2
2 2
2 2 unreachable
Abstraction # SMT queries Abstract Interp Query result Incremental? Fixed 1 per “line” per iteration SAT No Symbolic Exec No 1 per path mixed Yes BMC No 1 per unfolding UNSAT No Adaptive 1 per “line” per predicate per iteration UNSAT No Model Checking
QARMC -nopreprocess cdaudio. bug 7 s 70 s (10 x) diskperf 88 s > 600 s (> 7 x) summ_mccarthy 0. 5 s > 50 s (> 100 x) 1 s > 100 s (> 100 x) 0. 7 s 1. 4 s (2 x) qrdcmp tridag
True/False Z 3 BV SICStus LLVM Prolog CLPQ Constant. Range 3, 657 264, 550 (72 x) 2, 886 14, 682 (5 x) 883 4, 996 (6 x) 1, 748 5, 000 x potential 1, 091 20 Million
int f(int *a, int k) { int b[5]; for (unsigned i = 0; i < 5; ++i) { b[i] = a[i] + i; } return b[k]; Can’t alias (i. e. , don’t overlap) }
int f(int *a, int k) { int b[5]; for (unsigned i = 0; i < 5; ++i) { b[i] = a[i] + i; } return b[k]; }
char f(char x) { char y = 0; if (x < 0) y = 3; if (x >= 3 && (y & 1) != 0) return 0; return 1; }
char f(char x) { char y = 0; if (x < 0) y = 3; if (x >= 3 && (y & 1) != 0) return 0; return 1; }
function fn(a, b) { return a + b; }
function fn(a, b) { return a + b; } function fn(a, b) { if (typeof a === 'number' && typeof b === 'number') return Number. add(a, b); if (typeof a === 'string' && typeof b === 'string') return String. concat(a, b); return a + b; } Top 2 types at runtime
- Public void drawsquare(int x, int y, int len)
- Int sum(int a int n) int sum=0 i
- Fint
- Void swap(int a int b)
- Void
- Interface calculator public int add(int a int b) class test
- Divideint
- Int max(int x int y)
- Void main(void)
- Void loop()
- Void main(void)
- Public void set
- Void main int main
- Void func(int num)
- Void* to int
- I^2
- Void main() int i j charval='j'
- #include stdio.h void main()
- #include stdio.h int main(void)
- Void main() int i j charval='j'
- Public void int
- Public static void main int args
- Void fun(int *ptr)
- Int max
- 7팩토리얼
- Interface myinterface int foo(int x)
- Arduino const
- Int main int argc char argv
- Int main int argc char argv
- Int main int num 4
- Stål för stötfångarsystem
- Vishnuiter
- Centrum för kunskap och säkerhet
- Skivepiteldysplasi
- Lyckans minut erik lindorm analys
- Inköpsprocessen steg för steg
- Sura för anatom
- Strategi för svensk viltförvaltning
- Typiska drag för en novell
- Variansen formel
- Tack för att ni har lyssnat
- Treserva lathund
- Läkarutlåtande för livränta
- Påbyggnader för flakfordon
- Tack för att ni lyssnade
- Debattartikel mall
- Tobinskatten för och nackdelar
- Egg för emanuel
- En lathund för arbete med kontinuitetshantering
- Tack för att ni har lyssnat
- Rutin för avvikelsehantering
- Vad är vanlig celldelning
- Byggprocessen steg för steg
- Myndigheten för delaktighet
- Presentera för publik crossboss
- Rbk-mätning
- Kung som dog 1611
- Densitet vatten
- Tack för att ni lyssnade bild
- Tack för att ni har lyssnat
- Mall för referat
- Fimbrietratt
- Stig karttecken
- Formel för lufttryck
- Vilket tal pekar pilen på