Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Stránky: 1
Zdravím, můžete mi někdo pomoci s důkazem matematickou indukcí téhle funkce?
filter :: (a->Bool) -> [a] -> [a]
filter _ [] = []
filter p (x:s) = if p x then x : t else t where t = filter p s
absolutně netuším jak postupovat.. musel bych k tomu asi vědět i tu podmínku, ne? nebo si mám zvolit jakou chci?
dík za pomoc
Offline
Dokazujeme, že pro všechna n platí: pro všechny seznamy délky n filter P S vrátí prvky S, které vyhoví P v pořadí, v jakém jsou v S.
První krok: pro n=0. Tady sepoužije první větev, fce vrátí prázdný seynam, OK.
Indukční krok: předpokládám funkčnost pro n=k a dokazuju pro k+1>0.
Použije se druhá větev, fce filter vrátí první prvek sezamu právě když splní podmínku a za něj přidá filter p "ocasu". Protože je ocas délky k, filter p ocasu obsahuje z indukčního předpokladu právě ty jeho prvky, které vyhoví podmínce.
Toto je stručná verze, na písemce se to musí trochu očesat (např. nepoužívat slovo "ocas").
Offline
↑ Lota:Ano, ale chce to být o trochu formálnější. V indukčním kroku ukázat, že
* filter p (x:s) obsahuje všechny prvky x:s splňující p
* filter p (x:s) neobsahuje žádné jiné
* pořadí prvků zůstalo zachováno
Všecko jsou to triviality, ale hodilo by se to rozepsat.
Offline
Stránky: 1