According to documentation on OSPF-over-FR as Non-broadcast, one need to configure the 'neighbor statement' for OSPF to bring up the adjacent.
However in my GNS3 setup, I find that the adjacencies are formed even if I removed the neighbor statement
Diagram:

Config as follows:
R1
interface Serial0/0
ip address 10.0.0.1 255.0.0.0
encapsulation frame-relay
serial restart-delay 0
frame-relay map ip 10.0.0.4 104
frame-relay map ip 10.0.0.5 105
!
interface FastEthernet1/0
ip address 1.0.0.1 255.0.0.0
duplex auto
speed auto
!
router ospf 1
log-adjacency-changes
network 0.0.0.0 255.255.255.255 area 0
R4
interface Serial0/0
ip address 10.0.0.4 255.0.0.0
encapsulation frame-relay
ip ospf priority 0
serial restart-delay 0
frame-relay map ip 10.0.0.1 401
frame-relay map ip 10.0.0.5 401
no frame-relay inverse-arp IP 405
!
interface FastEthernet1/0
ip address 4.0.0.4 255.0.0.0
duplex auto
speed auto
!
router ospf 1
log-adjacency-changes
network 0.0.0.0 255.255.255.255 area 0
R5
interface Serial0/0
ip address 10.0.0.5 255.0.0.0
encapsulation frame-relay
ip ospf priority 0
serial restart-delay 0
frame-relay map ip 10.0.0.1 501
frame-relay map ip 10.0.0.4 501
no frame-relay inverse-arp IP 504
!
router ospf 1
log-adjacency-changes
network 0.0.0.0 255.255.255.255 area 0
It does shows at Non-broadcast network on all 3 but I clearly see the neighbor adjacent are up and the routing table shows O route (after clearing ospf process and routing table):
R1#show ip ospf interface
FastEthernet1/0 is up, line protocol is up
* omitted *
Serial0/0 is up, line protocol is up
Internet Address 10.0.0.1/8, Area 0
Process ID 1, Router ID 10.0.0.1, Network Type NON_BROADCAST, Cost: 64
Transmit Delay is 1 sec, State DR, Priority 1
Designated Router (ID) 10.0.0.1, Interface address 10.0.0.1
No backup designated router on this network
Timer intervals configured, Hello 30, Dead 120, Wait 120, Retransmit 5
oob-resync timeout 120
Hello due in 00:00:26
Supports Link-local Signaling (LLS)
Index 1/1, flood queue length 0
Next 0x0(0)/0x0(0)
Last flood scan length is 1, maximum is 3
Last flood scan time is 0 msec, maximum is 4 msec
Neighbor Count is 2, Adjacent neighbor count is 2
Adjacent with neighbor 10.0.0.4
Adjacent with neighbor 10.0.0.5
Suppress hello for 0 neighbor(s)
Neighbor ID Pri State Dead Time Address Interface
10.0.0.4 0 FULL/DROTHER 00:01:39 10.0.0.4 Serial0/0
10.0.0.5 0 FULL/DROTHER 00:01:35 10.0.0.5 Serial0/0
R1#show frame-relay map
Serial0/0 (up): ip 10.0.0.4 dlci 104(0x68,0x1880), static,
CISCO, status defined, active
Serial0/0 (up): ip 10.0.0.5 dlci 105(0x69,0x1890), static,
CISCO, status defined, active
So why is it that even without the neighbor statement the adjacencies are still formed?